www.gusucode.com > MATLAB神经网络原理与实例精解源文件程序代码 > 第5章 线性神经网络/code/xor_linearlayer.m

    % xor_linearlayer.m
%% 清理
close all
clear,clc

%% 定义变量
P1=[0,0,1,1;0,1,0,1]            	% 原始输入向量
p2=P1(1,:).^2;
p3=P1(1,:).*P1(2,:);
p4=P1(2,:).^2;
P=[P1(1,:);p2;p3;p4;P1(2,:)]    	% 添加非线性成分后的输入向量
d=[0,1,1,0]                     	% 期望输出向量
lr=maxlinlr(P,'bias')			% 根据输入矩阵求解最大学习率

%% 线性网络实现
net=linearlayer(0,lr);          	% 创建线性网络
net=train(net,P,d);             	% 线性网络训练


%% 显示
disp('网络输出')                	% 命令行输出
Y1=sim(net,P)
disp('网络二值输出');
YY1=Y1>=0.5
disp('最终权值:')
w1=[net.iw{1,1}, net.b{1,1}]
                    
plot([0,1],[0,1],'o','LineWidth',2);    % 图形窗口输出        
hold on;
plot([0,1],[1,0],'d','LineWidth',2);
axis([-0.1,1.1,-0.1,1.1]);
xlabel('x');ylabel('y');
title('线性神经网络用于求解异或逻辑');
x=-0.1:.1:1.1;y=-0.1:.1:1.1;
N=length(x);
X=repmat(x,1,N);
Y=repmat(y,N,1);Y=Y(:);Y=Y';
P=[X;X.^2;X.*Y;Y.^2;Y];
yy=net(P);
y1=reshape(yy,N,N);
[C,h]=contour(x,y,y1,0.5,'b');
clabel(C,h);
legend('0','1','线性神经网络分类面');